package org.jcc.core.cs.functional;

import java.lang.reflect.Method;

public class ReflectSum {
	
	public static void main(String[] args) throws Exception {
		// int.class 表示方法参数的类型
		int idSum = sum(MathUtil.class.getMethod("identity", int.class));
		int sqSum = sum(MathUtil.class.getMethod("square", int.class));
		int cbSum = sum(MathUtil.class.getMethod("cube", int.class));
		
		System.out.print(idSum + " " + sqSum + " " + cbSum);
	}
	
	public static int sum(Method m) throws Exception {
		int sum = 0;
		for (int i = 1; i <= 100; i++) {
			// 第一个参数为 null 表示为静态方法，没有对象与之关联
			// 返回值为 Object 类型，所以需要强制类型转换
			sum += (int)m.invoke(null, i);
		}
		return sum;
	}

}
